#include "myTIM\myTIM.h"

// 定义定时器句柄
TIM_HandleTypeDef htim1;

/* 71 + 86 对应 80us
 */
void TIM1_Init(void) {
    // 使能定时器1时钟
    __HAL_RCC_TIM1_CLK_ENABLE();

    // 配置定时器1的预分频器和自动重载值
    htim1.Instance = TIM1;
    htim1.Init.Prescaler = 71;          // 预分频器，72MHz / (71 + 1) = 1.08 MHz
    htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
    htim1.Init.Period = 215;             // 自动重载值，定时时间 = (ARR + 1) / 1.08 MHz = 80 us
    htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
    htim1.Init.RepetitionCounter = 0;

//		HAL_NVIC_SetPriority(TIM1_UP_TIM10_IRQn, 0, 0);  // 设置中断优先级
//		HAL_NVIC_EnableIRQ(TIM1_UP_TIM10_IRQn);  // 使能定时器1的中断
    // 初始化定时器
    if (HAL_TIM_Base_Init(&htim1) != HAL_OK) {
        // 初始化错误
        Error_Handler();
    }

    // 启用定时器1的更新中断
    HAL_TIM_Base_Start_IT(&htim1);
}

// 定时器1中断服务函数
void TIM1_UP_IRQHandler(void) {
    static uint8_t i = 1;
    if (__HAL_TIM_GET_FLAG(&htim1, TIM_FLAG_UPDATE)) {
        __HAL_TIM_CLEAR_FLAG(&htim1, TIM_FLAG_UPDATE);
        // 在此处添加定时器溢出后的处理逻辑
        Motor8(&A, i, 1);
        i ++;
        if (i == 9) {
            i = 1;
        }
    }
}

